package leetcode.hot100;

import leetcode.common.TreeNode;

@SuppressWarnings("all")
public class _226_翻转二叉树 {

    // 翻转一棵二叉树
    public TreeNode invertTree(TreeNode root) {
        // 结点为空或者只有一个结点可以很容易得出答案
        if (root == null) return null;
        if (root.left == null && root.right == null) return root;
        // 要翻转整棵二叉树就要依次翻转所有非叶子结点的左右子树

        // 翻转当前根结点的左右子树
        TreeNode temp = root.left;
        root.left = root.right;
        root.right = temp;
        // 翻转当前根结点的左子树和右子树
        invertTree(root.left);
        invertTree(root.right);
        // 不论怎么翻转，整棵二叉树的根结点是不会改变的
        return root;
    }
}
